
#ifndef __EDNN_CONV2D_H__
#define __EDNN_CONV2D_H__



#include "ednn_layers.h"



struct ednn_layer_conv2d
{
    struct ednn_layer super;

    ednn_shape3d_t kernel;
    ednn_shape3d_t stride;
    ednn_shape3d_t padding;
    ednn_shape3d_t dilation;
    ednn_padding_type padding_type;

    ednn_uint32_t features;

    struct ednn_tensor *weights;
    struct ednn_tensor *bias;

    ednn_qfmt_parm_t *bias_shift;
    ednn_qfmt_parm_t *output_shift;
};
typedef struct ednn_layer_conv2d ednn_layer_conv2d_t;



struct ednn_layer *ednn_conv2d_layer(
    ednn_uint32_t filters, 
    ednn_shape3d_t kernel, 
    ednn_shape3d_t stride, 
    ednn_shape3d_t dilation,
    ednn_padding_type padding_type);

#define Conv2D(f, k, s, d, p) ednn_conv2d_layer(f, k, s, d, p)

#endif /* __EDNN_CONV2D_H__ */
